Many modern computing systems exist in a volatile state. In order to ensure system reliability, security and availability, updates and patches may be applied to the system. In order to ensure system availability, performance and an optimal user experience, subsystems and components must be updated, altered and replaced equally frequently. In many modern computing systems, and especially those that involve virtualized and distributed computing environments, wherein a large plurality of systems work in concert to provide a set of functionality to a large number of users, system updates can take a significant amount of time. In such systems, the cooperative nature of the systems may mean that a simple update to a single subsystem may require updates to all subsystems. When a system update is undesirable, possibly because, for example, a bad configuration or performance problems, undoing the update can require an even more significant amount of time, often requiring manual intervention by computing system operators and lengthy system outages while the update is removed.